package ui.arena;

import org.uqbar.arena.actions.MessageSend;
import org.uqbar.arena.layout.HorizontalLayout;
import org.uqbar.arena.widgets.Button;
import org.uqbar.arena.widgets.Label;
import org.uqbar.arena.widgets.Panel;
import org.uqbar.arena.windows.Window;
import org.uqbar.arena.windows.WindowOwner;

import reservas.ClaseDeUsuarioNoPuedeReservarException;
import usuarios.Usuario;
import asientos.CodigoDeAsientoInvalidoException;
import asientos.EstadoDeAsientoIncorrectoException;
import asientos.EstadosAsiento;
import facade.AterrizarPuntoCom;

@SuppressWarnings("serial")
public class SobreReservaWindow extends Window<SobreReserva>{

	public SobreReservaWindow(WindowOwner owner, SobreReserva model) {
		super(owner, model);
	}

	@Override
	public void createContents(Panel mainPanel) {
		this.setTitle(TituloVentanas.getInstance().getTituloVentana());
		Label label = new Label(mainPanel);
		label.setText(this.getModelObject().getMensaje());
		Panel actionPanel = new Panel(mainPanel);
		actionPanel.setLayout(new HorizontalLayout());
		Button sobreReservarBoton = new Button(actionPanel);
		sobreReservarBoton
			.setCaption("Sobrereservar")
			.onClick(new MessageSend(this, "sobrereservar"));
		Button seguirBuscandoBoton = new Button(actionPanel);
		seguirBuscandoBoton.setCaption("Seguir Buscando").onClick(new MessageSend(this, "close")); //en este seguir buscando uso "close" para aprovechar la busqueda efectuada anteriormente
	}
	
	public void sobrereservar() {
		try{
			this.getModelObject().sobrereservar();
			new TransaccionOKWindow(this, new TransaccionOK("reservado", this.getModelObject().getVueloReservado())).open();
			// TODO: no catchear TOOOOOOODAS las excepciones acá. Ver cuáles tienen sentido.
		} catch(Exception e){
			// TODO: mensaje más amigable.
			new TransaccionErrorWindow(this, new TransaccionError("reserva", "ERROR desconocido ERROR!")).open();					
		}
		this.close();
	}
}
